package com.cy.ppj.service.statistics;

import java.util.List;

import com.cy.ppj.model.query.statistics.ChannelUserGroupByCityStatisticsQuery;
import com.cy.ppj.model.query.statistics.OrderGroupByCityStatisticsQuery;
import com.cy.ppj.model.vo.admin.statistics.ChannelUserGroupByCityStatisticsVO;
import com.cy.ppj.model.vo.admin.statistics.CommissionAndWithholdStatisticsVO;
import com.cy.ppj.model.vo.admin.statistics.OrderGroupByCityStatisticsVO;
import com.cy.ppj.model.vo.admin.statistics.OrderLoanRateStatisticsVO;
import com.cy.ppj.model.vo.admin.statistics.StatisticsOrderLoanCountVO;
import com.cy.ppj.model.vo.admin.statistics.StatisticsOrderLoanVO;
import com.cy.ppj.model.vo.admin.statistics.StatisticsUserCountVO;
import com.cy.ppj.model.vo.admin.statistics.StatisticsUserVO;
import com.cy.ppj.model.vo.admin.statistics.UserStructureStatisticsVO;

/**
 * 后台-数据统计
 *
 * @author: tanyilin
 * @create: 2018年10月17日 上午11:57:26
 */
public interface DataStatisticsService {

	/**
	 * 用户注册柱状图数据统计
	 * 
	 * @return
	 */
	List<StatisticsUserVO> selectStatisticsUserVOs();
	
	/**
	 * 用户注册数量统计
	 * 
	 * @return
	 */
	StatisticsUserCountVO selectStatisticsUserCountVO(); 
	
	/**
	 * 订单放款数据统计
	 * 
	 * @return
	 */
	List<StatisticsOrderLoanVO> selectStatisticsOrderLoanVOs();
	
	/**
	 * 订单放款数量统计
	 * 
	 * @return
	 */
	StatisticsOrderLoanCountVO selectStatisticsOrderLoanCountVO();
	
	/**
	 * 订单提单数据统计
	 * 
	 * @return
	 */
	List<StatisticsOrderLoanVO> selectStatisticsOrderVOs();
	
	/**
	 * 订单提单数量统计
	 * 
	 * @return
	 */
	StatisticsOrderLoanCountVO selectStatisticsOrderCountVO();
	
	/**
	 * 佣金、代扣统计
	 * 
	 * @return
	 */
	CommissionAndWithholdStatisticsVO selectCommissionAndWithholdStatisticsVO();
	
	/**
	 * 用户结构统计
	 * 
	 * @return
	 */
	List<UserStructureStatisticsVO> selectUserStructureStatisticsVOs();
	
	/**
	 * 放款率 统计
	 * 
	 * @return
	 */
	List<OrderLoanRateStatisticsVO> selectOrderLoanRateStatisticsVOs();
	
	/**
	 * 订单'放款量'按城市分组统计
	 * 
	 * @param query
	 * @return
	 */
	List<OrderGroupByCityStatisticsVO> selectOrderLoanAmountGroupByCityStatisticsVOs(OrderGroupByCityStatisticsQuery query);
	
	/**
	 * 订单'提单量'按城市分组统计
	 * 
	 * @param query
	 * @return
	 */
	List<OrderGroupByCityStatisticsVO> selectOrderCountGroupByCityStatisticsVOs(OrderGroupByCityStatisticsQuery query);
	
	/**
	 * 渠道员按城市分组统计注册量
	 * 
	 * @param query
	 * @return
	 */
	List<ChannelUserGroupByCityStatisticsVO> selectchannelUserGroupByCityStatisticsVOs(ChannelUserGroupByCityStatisticsQuery query);
}
